package com.example.mycommunity.service;

import com.example.mycommunity.dao.DiscussPostMapper;
import com.example.mycommunity.entity.DiscussPost;
import com.example.mycommunity.util.SensitiveFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.util.HtmlUtils;

import java.util.List;

@Service
public class DiscussPostService {
    @Autowired
    private DiscussPostMapper discussPostMapper;
    @Autowired
    private SensitiveFilter sensitiveFilter;
    public List<DiscussPost> findDiscussPosts (int userId, int offset, int limit, int orderMode) {
//        // 查询本地缓存(当查询的是所有用户的帖子并且按照热度排序时)
//        if (userId == 0 && orderMode == 1) {
//            return postListCache.get(offset + ":" + limit);
//        }
//        // 查询数据库
//        logger.debug("load post list from DB");
        return discussPostMapper.selectDiscussPosts(userId, offset, limit, orderMode);
    }
    public int findDiscussPostRows (int userId) {
//        // 查询本地缓存(当查询的是所有用户的帖子总数时)
//        if (userId == 0) {
//            return postRowsCache.get(userId);
//        }
//        // 查询数据库
//        logger.debug("load post rows from DB");
        return discussPostMapper.selectDiscussPostRows(userId);
    }
    /**
     * 添加帖子
     * @param discussPost
     * @return
     */
    public int addDiscussPost(DiscussPost discussPost) {
        if (discussPost == null) {
            throw new IllegalArgumentException("参数不能为空");
        }

        // 转义 HTML 标记，防止在 HTML 标签中注入攻击语句
        discussPost.setTitle(HtmlUtils.htmlEscape(discussPost.getTitle()));
        discussPost.setContent(HtmlUtils.htmlEscape(discussPost.getContent()));

        // 过滤敏感词
        discussPost.setTitle(sensitiveFilter.filter(discussPost.getTitle()));
        discussPost.setContent(sensitiveFilter.filter(discussPost.getContent()));

        return discussPostMapper.insertDiscussPost(discussPost);
    }

    /**
     * 根据 id 查询帖子
     * @param id
     * @return
     */
    public DiscussPost findDiscussPostById(int id) {
        return discussPostMapper.selectDiscussPostById(id);
    }

    /**
     * 修改帖子的评论数量
     * @param id 帖子 id
     * @param commentCount
     * @return
     */
    public int updateCommentCount(int id, int commentCount) {
        return discussPostMapper.updateCommentCount(id, commentCount);
    }
}
